package com.app.utils.util.net;


import android.support.annotation.NonNull;
import android.text.TextUtils;

import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.app.utils.util.AppUtils;
//import com.squareup.okhttp.OkHttpClient;

/**
 * 访问网络工具类
 * Created by xuxinghai on 2016/6/12.
 */
public class NetUtils {

    private static NetUtils sInstance;//唯一实例

    private RequestQueue mRequestQueue;//vollery请求

    private NetUtils(){
        getRequestQueue();//初始化网络工具
    }

    /**
     * 获取唯一实例
     * @return NetUtils
     */
    public static synchronized NetUtils getInstance(){
        if(sInstance == null){
            sInstance = new NetUtils();
        }
        return sInstance;
    }

    /**
     * 初始化访问网络的工具
     */
    public RequestQueue getRequestQueue(){
        if (mRequestQueue == null)
        {
//            mRequestQueue = Volley.newRequestQueue(AppUtils.getInstance().getContext(), new OkHttpStack(new OkHttpClient()));
            mRequestQueue = Volley.newRequestQueue(AppUtils.getInstance().getContext());
        }
        return mRequestQueue;
    }

    /**************以下是发送网络请求相关 start ****************/


    /**
     * 发送带标识的网络请求(方便断开请求)
     * @param request
     * @param tag
     */
    public void addRequest(@NonNull final Request<?> request, @NonNull final String tag){
        if(!TextUtils.isEmpty(tag)){
            request.setTag(tag);
        }

        addRequest(request);
    }

    /**
     * 发送网络请求
     *
     *
     * @param request 此参数不为空
     */
    public void addRequest(@NonNull final Request<?> request){
        request.setRetryPolicy(new DefaultRetryPolicy(6000,//默认超时时间，
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//默认最大尝试次数
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        getRequestQueue().add(request);
    }


    /**
     * 退出指定的网络请求
     * @param tag
     */
    public void cancelAllRequests(@NonNull final String tag)
    {
        if(!TextUtils.isEmpty(tag)){
            getRequestQueue().cancelAll(tag);
        }

    }

    /**************以下是发送网络请求相关 end ****************/




}
